#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtWebSockets/QtWebSockets>
#include <QtTypes>

QT_BEGIN_NAMESPACE

namespace Ui {
    class MainWindow;
}

QT_END_NAMESPACE

enum MessageFlowType: unsigned char {
    // 文本
    text = 0x01,
    // 图片/二进制
    image = 0x00
};

enum MessageLastFrame: unsigned char {
    yes = 0x01,
    no = 0x00
};

typedef struct MessageData
{
    MessageFlowType flowType;    // 流类型
    MessageLastFrame lastFrame;   // 是否是大包中最后一帧
    unsigned short size;       // 数据段大小
    const char *data;          // 字节流
} MessageData;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

protected:
    void dropEvent(QDropEvent *event) override;
    void dragEnterEvent(QDragEnterEvent *event) override;
    // 发送socket消息
    void sendMessage(MessageData &data);
    // 发送二进制消息
    void sendBinaryMessage(QFile &file);

private:
    Ui::MainWindow *ui;
    QWebSocket *socket;

private slots:
    void contactSocketServer();
    void sendTextMessage();
};

#endif // MAINWINDOW_H
